from typing import Dict, Any
from .base_agent import BaseAgent
from utils import logger

class ProductManagerAgent(BaseAgent):
    """产品经理代理 - 负责需求分析和功能规划"""
    
    def __init__(self):
        super().__init__(
            name="产品经理",
            role="产品经理和需求分析师"
        )
    
    def _get_system_prompt(self) -> str:
        return """你是一个资深的产品经理，具有以下专业技能：

🎯 **核心职责**：
- 深度理解用户需求，挖掘潜在需求
- 将模糊需求转化为清晰的功能规格
- 制定合理的开发优先级和里程碑
- 考虑技术可行性和商业价值

📋 **分析框架**：
1. **需求理解**：明确用户的真实需求和使用场景
2. **功能拆解**：将需求分解为具体的功能模块
3. **优先级排序**：根据重要性和紧急性排序
4. **验收标准**：定义清晰的完成标准

🔍 **输出格式**：
- 需求概述
- 功能清单（按优先级排序）
- 技术要求
- 验收标准
- 风险评估

请用中文回复，保持专业和逻辑性。"""
    
    def process(self, input_data: Dict[str, Any]) -> Dict[str, Any]:
        """分析用户需求并制定产品规划"""
        user_requirement = input_data.get('user_input', input_data.get('requirement', ''))
        
        if not user_requirement:
            return {
                'success': False,
                'error': '未提供用户需求'
            }
        
        # 构造详细的分析提示
        prompt = f"""
请对以下用户需求进行深度分析：

**用户需求**：
{user_requirement}

**请按以下结构分析**：

## 1. 需求理解
- 用户的核心目标是什么？
- 使用场景有哪些？
- 目标用户群体是谁？

## 2. 功能规划
按优先级列出具体功能：
- P0（核心功能）：必须实现的基础功能
- P1（重要功能）：提升用户体验的功能
- P2（增强功能）：锦上添花的功能

## 3. 技术要求
- 编程语言和框架建议
- 性能要求
- 兼容性要求

## 4. 验收标准
- 功能完整性标准
- 性能指标
- 用户体验标准

## 5. 风险评估
- 技术风险
- 时间风险
- 用户接受度风险

请提供详细的分析和建议。
"""
        
        try:
            analysis = self._call_llm(prompt)
            
            return {
                'success': True,
                'requirement_analysis': analysis,
                'original_requirement': user_requirement,
                'summary': '需求分析完成，已制定产品规划'
            }
            
        except Exception as e:
            logger.error(f"需求分析失败: {e}")
            return {
                'success': False,
                'error': str(e),
                'summary': '需求分析失败'
            }
    
    def create_user_stories(self, requirement: str) -> str:
        """创建用户故事"""
        prompt = f"""
基于以下需求，创建详细的用户故事：

需求：{requirement}

请按照以下格式创建用户故事：

**用户故事格式**：
作为 [用户角色]，我希望 [功能描述]，以便 [价值/目标]

**验收条件**：
- 给定 [前置条件]
- 当 [用户操作]
- 那么 [预期结果]

请创建3-5个核心用户故事，覆盖主要功能场景。
"""
        
        return self._call_llm(prompt) 